/**
 * 用户自定义manager的默认数值也可以定义在这里面，但是目前[不建议]这么做
 */
import { viewKeys, musicKeys, effecKeys } from '../app/executor'

interface SoundManager {
    static: (keyof typeof musicKeys | keyof typeof effecKeys)[],
    bundle: string,
    property: {
        musicMuteCacheKey: string,
        effectMuteCacheKey: string,
        defaultMusicName: keyof typeof musicKeys,
        defaultMusicVolum: number
    }
}
interface UiManager {
    static: (keyof typeof viewKeys)[],
    bundle: string,
    root: string,
    property: {
        defaultUI: keyof typeof viewKeys
        defaultData: string
    }
}

/**
 * 游戏名字
 */
export const name = '我的游戏';
/**
 * 游戏ID
 */
export const uuid = '';

/**
 * 1、soundSystem在初始化完成后，会自动调用soundSystem.playDefaultMusic，该方法中会根据defaultMusicName和defaultMusicVolum[加载并播放]音乐
 * 2、static起到预加载的作用，static中的资源会在[系统初始化过程中]加载完毕，并且保证一定会加载成功，失败会无限重试
 * example:
 * static: ['music/bgm','effect/btn']
 * defaultMusicName: 'music/bgm'
 * defaultMusicVolum: 1
 */
export var soundManager: SoundManager = {
    bundle: 'app-sound',
    static: ['music/bgm'],
    property: {
        musicMuteCacheKey: 'musicMute',
        effectMuteCacheKey: 'effectMute',
        defaultMusicName: 'music/bgm',
        defaultMusicVolum: 1
    }
}

/**
 * 1、uiSystem中存在showDefault方法，用来根据defaultUI展示UI，这个方法会被baseAppInit[初始化流程完成后]自动调用，保证首屏UI是defaultUI
 * 2、static起到预加载的作用，static中的资源会在[系统初始化过程中]加载完毕，并且保证一定会加载成功，失败会无限重试
 * example:
 * static: ['pageGame']
 * defaultUI: 'pageGame'
 * defaultData: '我是defaultData, defaultUI的onShow中可以接受到我'
 */
export var uiManager: UiManager = {
    root: 'Canvas/UserInterface',
    bundle: 'app-view',
    static: ['pageIndex'],
    property: {
        defaultUI: 'pageQuadtree',
        defaultData: '我是defaultData, defaultUI的onShow中可以接受到我'
    }
}